import rclpy
from rclpy.node import Node

class PersonNode(Node):
    def __init__(self, node_name: str, name_value: str, age_value: int) -> None:
        # 调用父类(Node)的初始化，传入节点名（ROS2节点标识）
        super().__init__(node_name)
        self.name = name_value  # 人的姓名
        self.age = age_value    # 人的年龄
        self.get_logger().info(f"PersonNode初始化完成：姓名={self.name}，年龄={self.age}")

    def eat(self, food_name: str):
        # 打印日志（ROS2推荐用get_logger，而非print）
        self.get_logger().info(f"{self.name}，{self.age}岁，喜欢吃{food_name}")

def main(args=None):
    # 1. 初始化rclpy
    rclpy.init(args=args)
    
    # 2. 创建节点实例（节点名建议用小写+下划线，和参数区分）
    # 格式：PersonNode(ROS2节点名, 人的姓名, 人的年龄)
    node = PersonNode("person_node", "法外狂徒", 18)
    
    # 3. 调用eat方法
    node.eat("apple")
    node.eat("pear")  # 修正peeer为pear
    
    # 4. 阻塞节点运行（否则节点会瞬间退出）
    rclpy.spin(node)
    
    # 5. 收尾：销毁节点+关闭rclpy
    node.destroy_node()
    rclpy.shutdown()

# 入口函数（ROS2节点规范写法）
if __name__ == '__main__':
    main()
